import { SocketD } from "@noear/socket.d";
import config from '@/config'
import tool from '@/utils/tool'
import { SimpleListener } from "@noear/socket.d/transport/core/Listener";


export async function Ws(tid, openCallback, errorCallback) {

	let apiurl = config.API_URL;

	let wss = "ws";
	if(apiurl.includes("https")){
		wss = "wss";
	}
	apiurl = apiurl.replace("http://", "").replace("https://", "")
	//如果不能连接正常返回（由心跳尝试不断连接）
	const session = SocketD.createClient(`sd:${wss}://${apiurl}/ws?tid=${tid}&token=${tool.data.get('TOKEN')}`)
		.listen(SocketD.newEventListener()
			.doOnOpen(s => { //会话打开时
				//...
			}).doOn("message", (s, m) => { //收到"/demo"事件的消息时
				//m.dataAsString()
				let c = JSON.parse(m.dataAsString());
				openCallback(c);
			}).doOnError((s) => {
				errorCallback(s)
			}).doOnClose((s) => {
				errorCallback(s)
			})
		)
		.open();

	// let listener = new SimpleListener();
	// listener.onOpen((s) => {
	// 	alert(2)
	// })
	// listener.onError((session, err) => {
	// 	errorCallback(err);
	// })
	// listener.onMessage((session,message)=>{
	// 	debugger
	// 	alert(1)
	// 	openCallback(message);
	// })
	// client = client.listen(listener);
	// console.log(client)
	//
	// const session = await client.open();

	//现在开始建立ws连接
	// var ws = new WebSocket(`ws://127.0.0.1:82${url}`);
	// 获取连接状态
	//监听是否连接成功
	//     ws.onopen = function () {
	//         //连接成功则发送一个数据
	//       //  ws.send('test1');
	//     }
	// // 接听服务器发回的信息并处理展示
	//     ws.onmessage = function (data) {
	//         //完成通信后关闭WebSocket连接
	//        // ws.close();
	//         openCallback(data);
	//     }
	// // 监听连接关闭事件
	//     ws.onclose = function () {
	//         // 监听整个过程中websocket的状态
	//         console.log('ws连接状态：' + ws.readyState);
	//     }
	// // 监听并处理error事件
	//     ws.onerror = function (error) {
	//         console.log(error);
	//         errorCallback(error);
	//     }
	return session;
}
